1. Technical Field of the Invention
The present invention relates to the decoding of adaptive differential pulse code modulation (ADPCM) encoded signals and, in particular, to a time multiplexed method for addressing a read only memory (ROM) that stores both ADPCM encoded source files and micro-controller operational instructions.
2. Description of Related Art
Applications needing speech synthesizers and/or tone generators are well known in the art. Examples of such applications include high-end educational toys, alert and warning systems, speech generators, and sound effect generators. It is common in such applications to store the voice data (i.e., the speech/sound/tone source file) in read only memory (ROM) in a pulse code modulation (PCM) format. The audible information comprising the speech, sound or tone may then be synthesized from the data in the ROM addressed source file and output for listening.
A concern exists, however, that even though PCM source files produce high quality output synthesized sound, these files (when stored) tend to take up an unacceptably large amount of ROM space. This is especially a concern in product applications where the total amount of available ROM space is severely limited (perhaps because of integrated circuit size restrictions or price considerations). In these situations, given a fixed ROM space, the relatively large size of the resulting source file severely limits the length of the audible voice data output that may be produced.
It is also recognized that in some product applications a higher quality output synthesized sound like that produced from PCM source files may not be required. Also, these applications may require the generation of a longer audible voice data output that cannot be achieved with PCM stored source files saved in limited ROM space. To address both of these concerns, the prior art teaches encoding the PCM source file instead in an adaptive differential pulse code modulation (ADPCM) format. This format advantageously uses approximately one-half the amount of ROM storage space to save the source file as that which is needed for conventional PCM files. This savings in storage space is made at the expense of some level of audible quality, but advantageously allows the user to generate a much longer synthesized sound output than is possible for PCM data saved in the same size ROM space.
Reference is now made to FIG. 1 wherein there is shown a block diagram of a conventional software-based ADPCM decoder. The decoder is typically implemented in a micro-controller unit (MCU), microprocessor unit (μP), or other intelligent processing device such as an application specific integrated circuit (ASIC), with the ADPCM decoding algorithm implemented in software instructions executed by the processing device. In accordance with one well known algorithm (as proposed by the Interactive Multimedia Association (IMA)), C(n) represents the ADPCM compressed data (i.e., the source file) as extracted from ROM memory (not shown). The compressed data is adaptatively dequantized to to generate data Dq(n). The dequantized compressed data Dq(n) is summed with a predicted value Xp(n−1) of the compressed data (C(n)) obtained from a previous sample to produce the output decoded data Xp(n). In this feedback configuration, the data Xp(n−1) represents the predicted value of the compressed data (C(n)) from the previous sample, and is generated by a predictor from the summer output predicted value Xp(n).
A number of drawbacks are recognized with this software based implementation for ADPCM decoding. First, with the ADPCM algorithm implemented in software, the processing device must execute many addition, shift and compare instructions in the period of one sample (n) of the data, and hence device operation may be slowed. Second, it takes a large amount of ROM space to store the ADPCM decoding algorithm (even though the encoded ADPCM source file may take up less space than a comparable PCM file). This may eliminate much of the ROM space gain achieved by switching from PCM to encoded ADPCM source files. Third, the processing unit typically cannot perform two things at one time and thus it cannot be interrupted to perform another action while the ADPCM decoding process is being implemented on a given source file.
What is needed is an ADPCM decoder system possessing quick execution time and that can take advantage of the ROM-based savings ADPCM format without needing to also store the decoding algorithm. Still further, there would be an advantage if the process for decoding a retrieved source file could be interrupted to allow the processor to handle other tasks.